#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "text_vector_utils.h"

//создаёт новый текстовый вектор
char **alloc_text_vector(int size) {
    return (char **) malloc(sizeof(char *) * size);
}

//расширяет текстовый вектор размера size до размера new_size
char **expand_text_vector(char ***vector, int *size, const int new_size) {
    *vector = (char **) realloc(*vector, sizeof(char *) * new_size);
    *size = new_size;

    return *vector;
}

//удаляет элемент совппадающий с elem из текстового вектора
void free_elem_from_text_vector(char **vector, int *elem_count, char *elem) {
    int i;
    //ищем и удаляем элемент
    for(i = 0; vector[i] != NULL; i++) {
        if(strcmp(vector[i], elem) == 0) {
            free(vector[i]);
            if(elem_count != NULL) {
                (*elem_count)--;
            }
            break;
        }
    }
    
    //сдвигаем оставшиеся элементы на одну позицию
    for(; vector[i] != NULL; i++) {
        vector[i] = vector[i + 1];
    }
}

//удаляет вектор
void free_vector(char **vector) {
    free(vector);
}

//удаляет вектор вместе с хранящимися в нём элементами
void free_vector_with_elems(char **vector) {
    int i;
    for(i = 0; vector[i] != NULL; i++) {
        free(vector[i]);
    }

    free_vector(vector);
}
